#pragma once
#include "InputSystem.h"

namespace Input{
	class WinMessagesInputInitParams : public InputInitParams{
	public:
		HWND m_hwnd;
		boost::shared_ptr<Core::Event<MSG*>> m_messageEvent;
	};

	class WinMessagesInputSystem : public InputSystem{
	public:
		WinMessagesInputSystem();
		~WinMessagesInputSystem();

		void initialize(boost::shared_ptr<InputInitParams> inputParams);

		void update();
	private:
		void recieveMessage(MSG *message);

		int m_mouseXPos,m_mouseYPos;

		boost::shared_ptr<Core::EventConnection> m_messageConnection;
		boost::shared_ptr<WinMessagesInputInitParams> m_winParams;

		std::map<DWORD,KeyDefinition> m_keyTranslateMap;
	};
}